<template>
	<view>
		<view class="content"></view>
	</view>
</template>

<script setup lang="ts">
import { ref ,onMounted,onUnmounted} from 'vue'
import { onHide, onLoad, onShow,onUnload } from '@dcloudio/uni-app'

let scanCode = ref('');
let main: any;
let receiver: any;
let filter: any;
let codeQueryTag = ref<boolean>(false);


// 控件显示时
//渲染DOM后
onMounted(()=>{
		initScan();
		// console.log("初始化")
		// 启动广播
		startScan();	
})
// 打开 App onLoad（只一次）


// 页面被隐藏
onHide(()=>{
	// console.log("关闭广播")
	// 关闭广播
	stopScan();
})
// 显示页面
onShow(()=>{
	
			
})
// 页面 被销毁
onUnload(() => {
  stopScan();
});

// // 组件卸载时
// onUnmounted(()=>{
// 	// 关闭广播
// 	stopScan();
// })
// 初始化
const initScan = () => {
	//  #ifdef APP-PLUS
	console.log('initScan:扫码初始化');
	main = plus.android.runtimeMainActivity(); //获取activity
	let IntentFilter = plus.android.importClass('android.content.IntentFilter')as any;
	filter = new IntentFilter();


	//下面的addAction 改为自己 pad 设备的广播动作（在扫描设置或者厂商附带的app 里面设置为广播模式，然后查看相应参数）
	// 添加扫描广播action（根据实际设备配置）
	// filter.addAction("com.service.scanner.data");//斑马PDA
	// filter.addAction("nlscan.action.SCANNER_RESULT");//新大陆PDA
	filter.addAction("com.android.server.scannerservice.broadcast");//东大集成PDA
	
	
	
	// 创建广播接收器
	receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
		onReceive: (context:any, intent:any) => {
			// 获取扫描结果
			plus.android.importClass(intent);
			
			// let banMaSacanInfo = intent.getStringExtra("SCAN_BARCODE1"); //新大陆PDA
			
			//下面的getStringExtra内改为自己的广播标签（键值/key）：
			// console.log('---***getStringExtra： ', intent.getStringExtra("SCAN_BARCODE1"));
			// 海康
			// let code = intent.getStringExtra("ScanCode");
			// console.log('---扫码data： ', code);
			//斑马 TC20
			// var banMaSacanInfo = intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string');	
			 // callback(intent.getStringExtra('com.motorolasolutions.emdk.datawedge.data_string'));
			// let banMaSacanInfo = intent.getStringExtra('SCAN_BARCODE1');//新大陆PDA
			var banMaSacanInfo = intent.getStringExtra('scannerdata');//东大集成PDA
			console.log('扫描结果', banMaSacanInfo)
			// 传入接收到的参数
			queryCode(banMaSacanInfo);
			// console.log(banMaSacanInfo);
		}
	});
	// #endif
}

// 启动扫描操作,将之前创建的广播接收器（receiver）注册到活动中,以便接收指定广播动作的结果
// filter 用于过滤广播消息，只有匹配过滤器中指定的广播动作的消息才会被接收和处理
const startScan=function() {
	//  #ifdef APP
	console.log('startScan,开启广播接收');
	main.registerReceiver(receiver, filter);
	// #endif
}

// 关闭广播
// 停止扫描操作,将之前注册的广播接收器（receiver）从活动中注销,以停止接收扫描结果的广播
function stopScan() {
	//  #ifdef APP
	console.log('stopScan，结束');
	main.unregisterReceiver(receiver);
	// #endif
}


// 避免重复扫码
const queryCode = function (code: any) {
	//  #ifdef APP
	if (codeQueryTag.value) return false;
	codeQueryTag.value = true;
	setTimeout(function () {
		codeQueryTag.value = false;
	}, 150);
	// console.log('-****--扫码code： ', code);
	scanCode.value = code
	// uni.$on('xwscan', function() {
	// 	uni.$emit('xwscan', {code:code})
	// })
	setTimeout(() => {
		//开启监听
		uni.$emit('xwscan', {
			code: code
		})
	}, 300)
	// #endif
}


</script>

<style scoped></style>
